/**
 * 应用入口文件
 * 配置Express应用
 */
const express = require('express')
const cors = require('cors')
const morgan = require('morgan')

const routes = require('./routes')
const errorHandler = require('./middlewares/errorHandler')
// 导入Swagger配置
const { swaggerUi, swaggerSpec } = require('./config/swagger')

// 创建Express应用
const app = express()

// 配置中间件
app.use(cors()) // 允许跨域请求
app.use(express.json()) // 解析JSON请求体
app.use(express.urlencoded({ extended: true })) // 解析URL编码的请求体
app.use(morgan('dev')) // 请求日志记录

// 配置Swagger文档路由 - 放在路由之前，避免认证中间件拦截
app.use('/docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec))

// 配置路由
app.use('/', routes)

// 健康检查路由
app.get('/health', (req, res) => {
	res.json({ status: 'ok', message: 'Server is running' })
})

// 404处理
app.use((req, res) => {
	res.status(404).json({
		code: '404',
		msg: '请求的资源不存在',
		data: null
	})
})

// 全局错误处理中间件
app.use(errorHandler)

module.exports = app
